我附上了两个if条件的例子.第一个if条件按预期工作.第二个if条件返回11,但为什么?我知道第二个if条件是错误的,但我想理解为什么Javascript在这种情况下返回11.
function exception(number) { // if(number === 10 || number === 11) { // Working as expected if(number === 10 || 11) { // Why 11? console.log(number); } } function loop(f) { for (i = 0; i <= 100; i++) { f(i); } } loop(exception);
CoderPi.. 5
有关您尝试实现的目标的一些信息:
number === 10 || number === 11
是相同的 (number === 10) || (number === 11)
number === 10 || 11
与此处(number === 10) || (11)
无法比较的相同11
number
现在让我们仔细看看number === 10 || 11
:
number === 10
将true
如果数目是类型数和等于10
如果第一个是假的,它将评估下一个语句的布尔值:( 11
接受为真,对于不等于0的数字)
J0B.. 5
从这个问题.
(expr1 || expr2)
"如果可以转换为true,则返回expr1;否则返回expr2."
资源
因此,当expr1
(或评估)其中之一时0,"",false,null,undefined,NaN
,则expr2
返回,否则expr1
返回
有关您尝试实现的目标的一些信息:
number === 10 || number === 11
是相同的 (number === 10) || (number === 11)
number === 10 || 11
与此处(number === 10) || (11)
无法比较的相同11
number
现在让我们仔细看看number === 10 || 11
:
number === 10
将true
如果数目是类型数和等于10
如果第一个是假的,它将评估下一个语句的布尔值:( 11
接受为真,对于不等于0的数字)
从这个问题.
(expr1 || expr2)
"如果可以转换为true,则返回expr1;否则返回expr2."
资源
因此,当expr1
(或评估)其中之一时0,"",false,null,undefined,NaN
,则expr2
返回,否则expr1
返回